package 数据结构;

import javax.imageio.plugins.jpeg.JPEGImageReadParam;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class TopVotedCandidate {
    // 人获得的票数 （persons[i],票数）
    Map<Integer,Integer> cntMap = new HashMap<>();
    // 当前时间领先的人  （t, persons[i]）
    TreeMap<Integer,Integer> tm = new TreeMap<>();
    public TopVotedCandidate(int[] persons, int[] times) {
        //领先人的编号
        int maxPersonId = -1;
        for(int i = 0;i < persons.length;i++) {
            // 人的得票增加
            int cnt = cntMap.getOrDefault(persons[i],0) + 1;
            cntMap.put(persons[i],cnt);
            // 获得最多票数
            int maxCnt = cntMap.getOrDefault(maxPersonId,0);
            //如果当前获得票数大于之前的最多票数，更新
            if(cnt >= maxCnt) {
                maxPersonId = persons[i];
            }
            // 维护当前时间得票最多的personId
            tm.put(times[i] , maxPersonId);
        }
    }

    public int q(int t) {
        //floorEntry 返回小于等于t的第一个元素
        return tm.floorEntry(t).getValue();
    }
}
